package com.iplant.aps.service.mesenum;

import com.iplant.aps.service.po.cfg.CFGItem;

import java.util.ArrayList;
import java.util.List;

/**
 * 来源类型
 *
 * @author YouWang·Peng
 * 2022-1-6 10:13:30
 */
public enum WMSPickDemandSourceType {
    /**
     * 默认
     */
    Default(0, "默认"),
    /**
     * 生产计划
     */
    Plan(1, "生产计划"),
    /**
     * 偶换件评审
     */
    OHJ(2, "偶换件评审"),
    /**
     * 不合格评审
     */
    NCR(3, "不合格评审"),
    /**
     * 工艺变更
     */
    TechChange(4, "工艺变更"),
    /**
     * 原单缺料
     */
    MaterialShortageOfOriginalOrder(5, "原单缺料"),
    /**
     * 台车BOM审批
     */
    APSBOMAudit(6, "台车BOM变更"),
    /**
     * 批量偶换件评审
     */
    BatchOHJ(7, "批量偶换件评审"),
    /**
     * 委外送修
     */
    OutSourceReapir(8, "委外送修"),
    /**
     * 原单缺料(生产计划)
     */
    Less_Plan(9, "原单缺料(生产)"),
    /**
     * 原单缺料(偶换件评审)
     */
    Less_OHJ(10, "原单缺料(偶换件)"),
    /**
     * 原单缺料(不合格评审)
     */
    Less_NCR(11, "原单缺料(不合格)"),
    /**
     * 原单缺料(工艺变更)
     */
    Less_TechChange(12, "原单缺料(工艺-变更)"),
    /**
     * 原单缺料(台车BOM变更)
     */
    Less_APSBOMAudit(13, "原单缺料(台车BOM-变更)"),
    /**
     * 原单缺料(批量偶换件评审)
     */
    Less_BatchOHJ(14, "原单缺料(批量偶换件)"),
    /**
     * 委外送修
     */
    Less_OutSourceReapir(15, "原单缺料(委外-送修)"),
    /**
     * 委外送修
     */
    QualityLoss(16, "质量损失"),
    /**
     * 委外送修
     */
    Less_QualityLoss(17, "原单缺料(质量-损失)"),
    /**
     * 报废评审
     */
    ScrapApproval(18, "报废评审"),
    /**
     * 原单缺料(报废评审)
     */
    Less_ScrapApproval(19, "原单缺料(报废评审)"),
    /**
     * 生产计划_委外
     */
    Plan_Out(20, "生产计划(委外)"),
    /**
     * 原单缺料(生产计划_委外)
     */
    Less_Plan_Out(21, "原单缺料(生产计划_委外)"),
    /**
     * 生产计划_委外(预检拆解)
     */
    Plan_PrevAndDisa(22, "生产计划_委外(预检拆解)"),
    /**
     * 台车BOM审批(委外)
     */
    APSBOMAudit_Out(23, "台车BOM变更(委外)"),
    /**
     * 偶换件评审
     */
    OHJ_Out(24, "偶换件评审(委外)"),
    /**
     * 偶换件评审
     */
    TechChange_Out(25, "工艺变更(委外)");


    private final int value;
    private final String label;

    WMSPickDemandSourceType(int value, String label) {
        this.value = value;
        this.label = label;
    }

    /**
     * 通过 value 的数值获取枚举实例
     */
    public static WMSPickDemandSourceType getEnumType(int val) {
        for (WMSPickDemandSourceType type : WMSPickDemandSourceType.values()) {
            if (type.getValue() == val) {
                return type;
            }
        }
        return WMSPickDemandSourceType.Default;
    }

    public static List<CFGItem> getEnumList() {
        List<CFGItem> wItemList = new ArrayList<>();

        for (WMSPickDemandSourceType type : WMSPickDemandSourceType.values()) {
            CFGItem wItem = new CFGItem();
            wItem.ID = type.getValue();
            wItem.ItemName = type.getLabel();
            wItem.ItemText = type.getLabel();
            wItemList.add(wItem);
        }
        return wItemList;
    }

    public int getValue() {
        return value;
    }

    public String getLabel() {
        return label;
    }
}
